package main
import(
	"sync"
	"fmt"
)
func main() {
	wg := sync.WaitGroup{}
	done := make(chan bool)
	num := 100
    //设置进行多少计数循环
	wg.Add(num)
    //同一个函数逻辑块内不可以同时对chan 进行存储和读取，否者会deadlock
	work := func (i int) {
		println(i)
		if i % 2 == 0 {
			done <- true
		}else{
			done <- false
		}
	}
	workSon := func(i int,wg *sync.WaitGroup){
		res := <-done
		fmt.Printf("当前第%d此获取数据，数据为：%v\r\n",i,res)
		wg.Done()
	}
	for i := 0; i < num; i++ {
		go work(i)
        // 一定要通过指针传值，不然进程会进入死锁状态
		go workSon(i,&wg)
	}
	wg.Wait()
	fmt.Println("任务结束")
}